package wodegua.d15_lambda;

/**
 * Lambda表达式是JDK 8开始新增的一种语法形式;作用:用于简化名内部类的代码写法。
 * (被重写方法的形参列表)-> {
 *      被重写方法的方法体代码，
 * }
 *
 *
 * 参数类型可以省略不写。
 * 如果只有一个参数，参数类型可以省略，同时()也可以省略。
 * 如果Lambda表达式中的方法体代码只有一行代码，可以省略大括号不写，同时要省略分号!此时，如果这行代码是return语句，也必须去掉return不写。
 */

public class LambdaTest1 {
    public static void main(String[] args) {
        // 目标：认识lambda表达式
//        (被重写方法的形参列表)-> {
//            被重写方法的方法体代码，
//        }

//        Animal a = new Animal() {
//            @Override
//            public void run() {
//                System.out.println("狗跑的则快");
//            }
//        };
//        a.run();

        // 注意：Lambda表达式并不是说能简化全部匿名内部类的写法，只能简化函数式接口的匿名内部类
//        Animal a = () -> {
//            System.out.println("狗跑的则快");
//        };
//        a.run();

//        Swimming s = new Swimming() {
//            @Override
//            public void run() {
//                System.out.println("游泳很开心");
//            }
//        };
//        s.run();

        Swimming s = () -> {
                System.out.println("游泳很开心");
        };
        s.run();

    }
}

interface Swimming{
    void run();
}

abstract class Animal{
    public abstract void run();
}
